package com.xiaoyu.string;

/**
 * Created by xiaoyu on 16/3/30.
 *
 *
 0: aload_0
 1: invokespecial #1                  // Method java/lang/Object."<init>":()V
 4: aload_0
 5: ldc           #2                  // String parent
 7: putfield      #3                  // Field name:Ljava/lang/String;
 10: aload_0
 11: invokevirtual #4                  // Method printName:()V
 14: return

 1.调用父类的构造函数
 2.（10）的aload_0压入栈（也就是当前的this引用！），
 也就是说，此时在Parent类中的this并不是代码Parent实例本身，而是代表Child类的实例引用，
 所以此时运行调用时会优先到Child实例上去寻找printName方法，如果有该方法就执行，没有则执行父类的。
 而Child类里的name还没有初始化，所以看到child=null
 */
public class Parent {
    private String name = "parent";

    public Parent() {
        printName();
    }

    public void printName() {
        System.out.println("parent = " + name);
    }
}
